{
    "cells": [
        {
            "cell_type": "markdown",
            "metadata": {
                "azdata_cell_guid": "e4ed0892-7b5a-4d95-bd0d-a6c3eb0b2c99"
            },
            "source": [
                "![Microsoft](https://raw.githubusercontent.com/microsoft/azuredatastudio/main/extensions/arc/images/microsoft-small-logo.png)\n",
                " \n",
                "## Create a PostgreSQL server - Azure Arc on an existing Azure Arc Data Controller\n",
                " \n",
                "This notebook walks through the process of creating a PostgreSQL server - Azure Arc on an existing Azure Arc Data Controller.\n",
                " \n",
                "* Follow the instructions in the **Prerequisites** cell to install the tools if not already installed.\n",
                "* Make sure you have the target Azure Arc Data Controller already created.\n",
                "\n",
                "<span style=\"color:red\"><font size=\"3\">Please press the \"Run All\" button to run the notebook</font></span>"
            ]
        },
        {
            "cell_type": "markdown",
            "metadata": {
                "azdata_cell_guid": "20fe3985-a01e-461c-bce0-235f7606cc3c"
            },
            "source": [
                "### **Prerequisites** \n",
                "Ensure the following tools are installed and added to PATH before proceeding.\n",
                " \n",
                "|Tools|Description|Installation|\n",
                "|---|---|---|\n",
                "|Azure CLI (az) | Command-line tool for installing and managing resources in an Azure Arc cluster |[Installation](https://docs.microsoft.com/cli/azure/install-azure-cli-windows?tabs=azure-cli) |\n",
                "|Azure CLI arcdata extension | Commands for using Azure Arc for Azure data services. | [Installation](https://docs.microsoft.com/azure/azure-arc/data/install-arcdata-extension)"
            ]
        },
        {
            "cell_type": "markdown",
            "metadata": {
                "azdata_cell_guid": "68531b91-ddce-47d7-a1d8-2ddc3d17f3e7"
            },
            "source": [
                "### **Setup and Check Prerequisites**"
            ]
        },
        {
            "cell_type": "code",
            "execution_count": null,
            "metadata": {
                "azdata_cell_guid": "749d8dba-3da8-46e9-ae48-2b38056ab7a2",
                "tags": []
            },
            "outputs": [],
            "source": [
                "import sys,os,json,subprocess\n",
                "def run_command():\n",
                "    print(\"Executing: \" + cmd)\n",
                "    output = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True )\n",
                "    if output.returncode != 0:\n",
                "        print(f'Command: {cmd} failed \\n')\n",
                "        print(f'\\t>>>Error output: {output.stderr.decode(\"utf-8\")}\\n')\n",
                "        sys.exit(f'exit code: {output.returncode}\\n')\n",
                "    print(f'Successfully executed: {cmd}')\n",
                "    print(f'\\t>>>Output: {output.stdout.decode(\"utf-8\")}\\n')\n",
                "    return output.stdout.decode(\"utf-8\")\n",
                "cmd = 'az --version'\n",
                "out = run_command()\n"
            ]
        },
        {
            "cell_type": "markdown",
            "metadata": {
                "azdata_cell_guid": "68ec0760-27d1-4ded-9a9f-89077c40b8bb"
            },
            "source": [
                "### **Set variables**\n",
                "\n",
                "#### \n",
                "\n",
                "Generated by Azure Data Studio using the values collected in the 'Deploy a PostgreSQL server - Azure Arc instance' wizard"
            ]
        },
        {
            "cell_type": "markdown",
            "metadata": {
                "azdata_cell_guid": "90b0e162-2987-463f-9ce6-12dda1267189"
            },
            "source": [
                "### **Creating the PostgreSQL server - Azure Arc instance**"
            ]
        },
        {
            "cell_type": "code",
            "execution_count": null,
            "metadata": {
                "azdata_cell_guid": "4fbaf071-55a1-40bc-be7e-7b9b5547b886"
            },
            "outputs": [],
            "source": [
                "print (f'Creating the PostgreSQL server - Azure Arc instance')\n",
                "\n",
                "port = f' --port \"{postgres_server_port}\"' if postgres_server_port else \"\"\n",
                "service_type = f' --service-type \"{postgres_server_service_type}\"' if postgres_server_service_type else \"\"\n",
                "volume_size_data = f' --volume-size-data {postgres_server_volume_size_data}Gi' if postgres_server_volume_size_data else \"\"\n",
                "volume_size_logs = f' --volume-size-logs {postgres_server_volume_size_logs}Gi' if postgres_server_volume_size_logs else \"\"\n",
                "\n",
                "storage_class_data = f' --storage-class-data {postgres_storage_class_data}' if postgres_storage_class_data else \"\"\n",
                "storage_class_logs = f' --storage-class-logs {postgres_storage_class_logs}' if postgres_storage_class_logs else \"\"\n",
                "\n",
                "cores_request = f' --cores-request {postgres_server_cores_request}' if postgres_server_cores_request else \"\"\n",
                "cores_limit = f' --cores-limit {postgres_server_cores_limit}' if postgres_server_cores_limit else \"\"\n",
                "memory_request = f' --memory-request {postgres_server_memory_request}Gi' if postgres_server_memory_request else \"\"\n",
                "memory_limit = f' --memory-limit {postgres_server_memory_limit}Gi' if postgres_server_memory_limit else \"\"\n",
                "dev_use = ' --dev' if postgres_server_dev_use == 'true' else ''\n",
                "\n",
                "os.environ[\"AZDATA_USERNAME\"] = postgres_server_username\n",
                "os.environ[\"AZDATA_PASSWORD\"] = os.environ[\"AZDATA_NB_VAR_POSTGRES_SERVER_PASSWORD\"]\n",
                "cmd = f'az postgres server-arc create --name {postgres_server_name} --k8s-namespace {arc_data_controller_namespace} --use-k8s {storage_class_data}{storage_class_logs}{port}{service_type}{volume_size_data}{volume_size_logs}{cores_request}{cores_limit}{memory_request}{memory_limit}{dev_use}'\n",
                "out=run_command()"
            ]
        }
    ],
    "metadata": {
        "kernelspec": {
            "display_name": "Python 3",
            "language": "python",
            "name": "python3"
        },
        "language_info": {
            "codemirror_mode": {
                "name": "ipython",
                "version": 3
            },
            "file_extension": ".py",
            "mimetype": "text/x-python",
            "name": "python",
            "nbconvert_exporter": "python",
            "pygments_lexer": "ipython3",
            "version": "3.6.6"
        }
    },
    "nbformat": 4,
    "nbformat_minor": 2
}
